<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>GEN08</title>
    <link rel="stylesheet" type="text/css" href="csound.css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <link rel="home" href="index.html" title="The Canonical Csound Reference Manual" />
    <link rel="up" href="ScoregensTop.html" title="Score Statements and GEN Routines" />
    <link rel="prev" href="GEN07.html" title="GEN07" />
    <link rel="next" href="GEN09.html" title="GEN09" />
  </head>
  <body>
    <div class="navheader">
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">GEN08</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="GEN07.html">Prev</a> </td>
          <th width="60%" align="center">Score Statements and GEN Routines</th>
          <td width="20%" align="right"> <a accesskey="n" href="GEN09.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="refentry">
      <a id="GEN08"></a>
      <div class="titlepage"></div>
      <a id="IndexGEN08" class="indexterm"></a>
      <div class="refnamediv">
        <h2>
          <span class="refentrytitle">GEN08</span>
        </h2>
        <p>GEN08 — 
      Generate a piecewise cubic spline curve.
    </p>
      </div>
      <div class="refsect1">
        <a id="idp213900736"></a>
        <h2>Description</h2>
        <p>
      This subroutine will generate a piecewise cubic spline curve, the smoothest possible through all specified points.
    </p>
      </div>
      <div class="refsect1">
        <a id="idp213902160"></a>
        <h2>Syntax</h2>
        <pre class="synopsis"><span class="command"><strong>f</strong></span> # time size 8 a n1 b n2 c n3 d ...</pre>
      </div>
      <div class="refsect1">
        <a id="idp213904048"></a>
        <h2>Initialization</h2>
        <p>
      <span class="emphasis"><em>size</em></span> -- number of points in the table. Must be a power of 2 or power-of-2 plus 1 (see <a class="link" href="f.html" title="f Statement (or Function Table Statement)"><em class="citetitle">f statement</em></a>).
    </p>
        <p>
      <span class="emphasis"><em>a, b, c,</em></span> etc. -- ordinate values of the function.
    </p>
        <p>
      <span class="emphasis"><em>n1, n2, n3 ... </em></span> -- length of each segment measured in stored values. May not be zero, but may be fractional. A particular segment may or may not actually store any values; stored values will be generated at integral points from the beginning of the function. The sum <span class="emphasis"><em>n1</em></span> + <span class="emphasis"><em>n2</em></span> + ... will normally equal <span class="emphasis"><em>size</em></span> for fully specified functions.
    </p>
        <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
          <table border="0" summary="Note: Note">
            <tr>
              <td rowspan="2" align="center" valign="top" width="25">
                <img alt="[Note]" src="images/note.png" />
              </td>
              <th align="left">Note</th>
            </tr>
            <tr>
              <td align="left" valign="top">
                <p>
        </p>
                <div class="itemizedlist">
                  <ul class="itemizedlist" style="list-style-type: disc; ">
                    <li class="listitem">
                      <p>
              <span class="emphasis"><em>GEN08</em></span> constructs a stored table from segments of cubic polynomial functions. Each segment runs between two specified points but depends as well on their neighbors on each side. Neighboring segments will agree in both value and slope at their common point. (The common slope is that of a parabola through that point and its two neighbors). The slope at the two ends of the function is constrained to be zero (flat).
            </p>
                    </li>
                    <li class="listitem">
                      <p>
              <span class="emphasis"><em>Hint:</em></span> to make a discontinuity in slope or value in the function as stored, arrange a series of points in the interval between two stored values; likewise for a non-zero boundary slope.
            </p>
                    </li>
                  </ul>
                </div>
                <p>
      </p>
              </td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="idp213915344"></a>
        <h2>Examples</h2>
        <p>
	    Here is an example of the GEN08 routine. It uses the files <a class="ulink" href="examples/gen08.csd" target="_top"><em class="citetitle">gen08.csd</em></a>.
      </p>
        <div class="example">
          <a id="idp213917120"></a>
          <p class="title">
            <strong>Example 1098. An example of the GEN08 routine.</strong>
          </p>
          <div class="example-contents">
            <pre class="programlisting">
<span class="csdtag">&lt;CsoundSynthesizer&gt;</span>
<span class="csdtag">&lt;CsOptions&gt;</span>
<span class="comment">; Select audio/midi flags here according to platform</span>
-odac  <span class="comment">;;;realtime audio out</span>
<span class="comment">;-iadc    ;;;uncomment -iadc if realtime audio input is needed too</span>
<span class="comment">; For Non-realtime ouput leave only the line below:</span>
<span class="comment">; -o gen08.wav -W ;;; for file output any platform</span>
<span class="csdtag">&lt;/CsOptions&gt;</span>
<span class="csdtag">&lt;CsInstruments&gt;</span>

<span class="ohdr">sr</span> <span class="op">=</span> 44100
<span class="ohdr">ksmps</span> <span class="op">=</span> 32
<span class="ohdr">nchnls</span> <span class="op">=</span> 2
<span class="ohdr">0dbfs</span>  <span class="op">=</span> 1

<span class="oblock">instr</span> 1

ifn  <span class="op">=</span> p4				<span class="comment">;choose between tables</span>
kcps <span class="opc">init</span> 1<span class="op">/</span>p3				<span class="comment">;create index over duration of note.</span>
kndx <span class="opc">phasor</span> kcps
ixmode <span class="op">=</span> 1
kval <span class="opc">table</span> kndx, 2, ixmode		<span class="comment">;normalize index data</span>

ibasefreq <span class="op">=</span> 440
kfreq <span class="op">=</span> kval <span class="op">*</span> 100			<span class="comment">;scale</span>
asig  <span class="opc">poscil</span> .7, ibasefreq <span class="op">+</span> kfreq, 1	<span class="comment">;and add to frequency</span>
      <span class="opc">outs</span> asig, asig
  
<span class="oblock">endin</span>
<span class="csdtag">&lt;/CsInstruments&gt;</span>
<span class="csdtag">&lt;CsScore&gt;</span>
<span class="stamnt">f</span> 1 0 16384 10 1	<span class="comment">;sine wave.</span>
<span class="stamnt">f</span> 2 0 65 8 0 16 1 16 1 16 0 17 0
<span class="stamnt">f</span> 3 0 65 8 -1 32 1 2 0 14 0 17 0

<span class="stamnt">i</span> 1 0 2 1
<span class="stamnt">i</span> 1 3 2 2
<span class="stamnt">e</span>
<span class="csdtag">&lt;/CsScore&gt;</span>
<span class="csdtag">&lt;/CsoundSynthesizer&gt;</span>
</pre>
          </div>
        </div>
        <p><br class="example-break" />

        <span class="phrase">These are the diagrams of the waveforms of the GEN08 routines, as used in the example:</span>

      </p>
        <div class="mediaobject">
          <img src="images/gen08_1.png" alt="f 2 0 65 8 0 16 1 16 1 16 0 17 0 - a curve with a smooth hump in the middle, going briefly negative outside the hump then flat at its ends" />
          <div class="caption">
            <p>f 2 0 65 8 0 16 1 16 1 16 0 17 0 - a curve with a smooth hump in the middle, going briefly negative outside the hump then flat at its ends</p>
          </div>
        </div>
        <p>

      </p>
        <div class="mediaobject">
          <img src="images/gen08_2.png" alt="f 3 0 65 8 -1 32 1 2 0 14 0 17 0 - from a negative value,a curve with a smooth hump, going negative creating a small hump then flat at its ends" />
          <div class="caption">
            <p>f 3 0 65 8 -1 32 1 2 0 14 0 17 0 - from a negative value,a curve with a smooth hump, going negative creating a small hump then flat at its ends</p>
          </div>
        </div>
        <p>

    </p>
      </div>
      <div class="refsect1">
        <a id="idp213926912"></a>
        <h2>See Also</h2>
        <p>
       <a class="link" href="GEN05.html" title="GEN05"><em class="citetitle">GEN05</em></a>,
       <a class="link" href="GEN06.html" title="GEN06"><em class="citetitle">GEN06</em></a>, and
       <a class="link" href="GEN07.html" title="GEN07"><em class="citetitle">GEN07</em></a>
     </p>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="GEN07.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="ScoregensTop.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="GEN09.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">GEN07 </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> GEN09</td>
        </tr>
      </table>
    </div>
  </body>
</html>
